#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<stdlib.h>
const int num = 10;
void Worker()
{
        int cnt = 12;
        while(cnt)
        {
                printf("child %d is running, cnt: %d\n", getpid(), cnt);
                cnt--;
                sleep(1);
        }
}
int main()
{
        for(int i = 0; i < num; i++)
        {
                pid_t id = fork();
                if(id < 0) break;
                if(id == 0)
                {
                        //子进程
                        Worker();
                        exit(0);//让子进程直接退出
                }
                printf("father create child process success, child pid: %d\n", id);
                sleep(1);
        }

        //只有父进程会执行到这里
        sleep(10);
        return 0;
}

//int main()
//{
//        printf("before fork: i am a process. pid= %d, ppid: %d\n", getpid(), getppid());
//        sleep(5);
//        printf("开始创建进程\n");
//        sleep(1);
//        pid_t id = fork();
//        if(id < 0) return -1;
//        else if(id == 0)
//        {
//                //子进程
//               while(1)
//               {
//                  printf("after fork, 我是子进程:  i am a process. pid= %d, ppid: %d, return id: %d\n", getpid(), getppid(), id);
//                  sleep(1);
//               }
//        }
//        else 
//        {
//                //父进程
//               while(1)
//               {
//                  printf("after fork, 我是父进程:  i am a process. pid= %d, ppid: %d, return id: %d\n", getpid(), getppid(), id);
//                  sleep(1);
//               }
//        }
//
//        printf("after fork: i am a process. pid= %d, ppid: %d, return id: %d\n", getpid(), getppid(), id);
//
//        sleep(2);
//        return 0;
//}
